home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus Special 25
/
AMIGAplus Sonderheft 25 (2000)(Falke)(DE)(Track 1 of 4)[!].iso
/
PublicDomain
/
Anwendungen
/
ASCII-Clip
/
ASCII-Clip.asc
< prev
next >
Wrap
Text File
|
1999-04-05
|
7KB
|
315 lines
WBStartup
;---------------------This Code requires the AmigaLibsII.res ------------------
Let version$="$VER: ASCII-Clip v1.03 ? 5.April 1999 by FreeJack [FreeJack@FreeJack.de] (05.04.99)"
Let Boot$=ProgDir$
Let lf.s=Chr$(10)
Let lfn.s=Chr$(10)+Chr$(0)
;------------------------------- Catalog Part Start -----------------------------
Dim Daten$(4), Cat$(65535)
Let *Cat=OpenCatalogA_(0,"ASCII-Clip.catalog",0)
If *Cat
For i=1 To 4
Let Daten$(i)=PeekTo$(GetCatalogStr_(*Cat,i,0),0)
Next i
CloseCatalog_(*Cat)
Else
Restore Datas
For i=1 To 4
Read Daten$(i)
Next i
EndIf
.Datas
Data.s "made by FreeJack [FreeJack@FreeJack.de]"
Data.s "Copies a single ASCII Code To Clipboard"
Data.s "Then you can paste the ASCII-Code in any Program"
Data.s "copied ..."
;------------------------------- Catalog Part End ------------------------------
;------------------------------ Function Part Start ----------------------------
.Echo
Statement Echo{Text$}
Let NText$=Text$+Chr$(10)+Chr$(0)
Let void=PutStr_(&NText$)
End Statement
.MakeVers
Function.s MakeVers{a$}
b$=UnRight$(a$,6)
Function Return b$
End Function
vers$=MakeVers{version$}
Echo{vers$}
;------------------------------- Function Part End -----------------------------
If NumPars=0
;Echo {vers$}
Else
Echo {Daten$(1)}
Echo {Daten$(2)}
Echo {Daten$(3)}
End
EndIf
;-------------------------------- CLI Parsing End ------------------------------
;----------------------------- Clipboard Init Start ----------------------------
NEWTYPE.OwnIOStdReq
io_Message.Message
*io_Device.b ;Device
; *io_Unit.ClipboardUnitPartial
*io_Unit.b
io_Command.w
io_Flags.b
io_Error.b
io_Actual.l
io_Length.l
*io_Data.b
io_Offset.l
;add particulars to device here
io_ClipID.l
End NEWTYPE
#_INVALID=0:#_RESET=1:#_READ=2:#_WRITE=3:#_UPDATE=4
#_CLEAR=5:#_STOP=6:#_START=7:#_FLUSH=8:#_NONSTD= 9
DEFTYPE .OwnIOStdReq clipio
DEFTYPE .MsgPort clipport
clipsig.l=0
.ClipOpen
Statement ClipOpen{}
SHARED clipio,clipport,clipsig
clipport\mp_Node\ln_Type=4
clipport\mp_MsgList\lh_Head=&clipport\mp_MsgList\lh_Tail
clipport\mp_MsgList\lh_TailPred=&clipport\mp_MsgList\lh_Head
clipio\io_Message\mn_Node\ln_Type=5
clipio\io_Message\mn_ReplyPort=&clipport
clipio\io_Message\mn_Length=SizeOf.IOStdReq
d.s="clipboard.device"
If OpenDevice_(d,0,clipio,0)<>0 Then End
clipsig.l=AllocSignal_(-1):If clipsig<0 Then End
clipport\mp_SigBit=clipsig
clipport\mp_SigTask=FindTask_(0)
End Statement
.ClipClose
Statement ClipClose{}
SHARED clipio,clipsig
CloseDevice_ clipio
FreeSignal_ clipsig
End Statement
.ClipWrite
Statement ClipWrite{s.s}
SHARED clipio
ClipOpen{}
sodd.s=s
If Len(s) MOD 2 Then sodd+Chr$(0)
a.s="FORM"+Mkl$(12+Len(sodd))+"FTXTCHRS"+Mkl$(Len(s))+sodd
USEPATH clipio
\io_Command=#_WRITE
\io_Data=&a
\io_Length=Len(a)
\io_ClipID=0
\io_Offset=0
\io_Error=0
SendIO_ clipio
\io_Command=#_UPDATE
SendIO_ clipio
ClipClose{}
End Statement
;------------------------------ Clipboard Init End ------------------------------
font.l=AllocMem(200,$10002)
Poke.w font+4,8
Poke.l font ,font+10
fontn$="topaz.font"
Poke$ font+10,fontn$
; Set up required IDCMP flags to respond to
#IDCMP = #IDCMP_NEWSIZE | #IDCMP_RAWKEY | #IDCMP_MOUSEBUTTONS | #IDCMP_MOUSEMOVE
#IDCMP =#IDCMP| #IDCMP_CLOSEWINDOW | #IDCMP_VANILLAKEY
WbToScreen 0
WBenchToFront_
*_screen._Screen = Peek.l(Addr Screen(0))
DEFTYPE._Window *win
DEFTYPE.l windowsig, signal
DEFTYPE.IntuiMessage *msg
DEFTYPE.IntuiText it
quit.w = 0
leer$ = "Clip me"
TLeft.l=*_screen\Width-140
;--------- Define tags for Window
Dim wtags.TagItem(15)
Dim ztags.w(5)
ztags(0)=0
ztags(1)=11
ztags(2)=200
ztags(3)=11
ztags(4)=0
wtags(0)\ti_Tag=#WA_PubScreen,*_screen
wtags(1)\ti_Tag=#WA_IDCMP,#IDCMP
wtags(2)\ti_Tag=#WA_Flags,$1160e
wtags(3)\ti_Tag=#WA_ScreenTitle,&vers$
wtags(4)\ti_Tag=#WA_MinWidth,100
wtags(5)\ti_Tag=#WA_MinHeight,11
wtags(6)\ti_Tag=#WA_MaxWidth,*_screen\Width
wtags(7)\ti_Tag=#WA_MaxHeight,*_screen\Height
wtags(8)\ti_Tag=#WA_Left,TLeft
wtags(9)\ti_Tag=#WA_Top,11
wtags(10)\ti_Tag=#WA_Width,140
wtags(11)\ti_Tag=#WA_Height,150
wtags(12)\ti_Tag=#WA_Zoom,&ztags(0)
wtags(13)\ti_Tag=#WA_Title,&leer$
wtags(14)\ti_Tag=#TAG_END,#TAG_DONE
; Try to open window
*win = OpenWindowTagList_(0, &wtags(0))
If *win
windowsig.l = 1 LSL *win\UserPort\mp_SigBit
d.l = windowsig|#SIGBREAKF_CTRL_C
rp.l=*win\RPort
Gosub DrawData
While quit = 0
signal.l = Wait_(d)
If (signal & windowsig)
*msg = GT_GetIMsg_(*win\UserPort)
While (*msg)
ev.l = *msg\Class
; Echo{"Class: "+Hex$(ev)}
Select ev
Case #IDCMP_CLOSEWINDOW
quit = 1
Case 2
Gosub DrawData
Case $8
Code.l = *msg\Code
If Code=104 Then Gosub Clip
Case $10
Code.l = *msg\Code
Gosub Emit
Case $200000
Code.l = *msg\Code
; Echo{"Code : "+Str$(Code)}
Select Code
Case 27
quit = 1
End Select
End Select
GT_ReplyIMsg_(*msg)
*msg = GT_GetIMsg_(*win\UserPort)
Wend
End If
If (signal & #SIGBREAKF_CTRL_C)
;---------- Ctrl-C needs to be pressed in CLI window !!!!!! -----------
quit = 1
End If
Wend
CloseWindow_(*win)
End If
End
.DrawData
offset.b=6
ofont.l=OpenFont_(font)
SetFont_ rp,ofont
SetAPen_ rp,1
SetBPen_ rp,0
For i=0 To 15
For j=0 To 15
Move_ rp,j*8,i*8+offset
k=i*16+j
Text$=Chr$(k)
Text_ rp,&Text$,1
Next j
Next i
CloseFont_ ofont
Return
.Emit
ofont.l=OpenFont_(font)
SetFont_ rp,ofont
SetAPen_ rp,1
SetBPen_ rp,2
Mx.l=*win\GZZMouseX/8
If Mx> 15 Then Mx=15
If Mx< 0 Then Mx= 0
My.l=*win\GZZMouseY/8
If My> 15 Then My=15
If My< 0 Then My= 0
Zahl.l=My*16+Mx
Wert$=Left$(Str$(Zahl)+") ",4)
Let Text$=Chr$(Zahl)+"= ASCII ("+Wert$
Move_ rp,8,135
Text_ rp,&Text$,14
CloseFont_ ofont
Return
.Clip
ClipWrite {Chr$(Zahl)}
ofont.l=OpenFont_(font)
SetFont_ rp,ofont
SetAPen_ rp,1
SetBPen_ rp,2
Let Text$=Chr$(Zahl)+" = "+Daten$(4)
Move_ rp,8,135
Text_ rp,&Text$,14
CloseFont_ ofont
Return